﻿using Bilibili.Model.Common;
using Bilibili.Model.Resource;
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;

namespace Bilibili.Common.Api
{
    public interface IApiClient : IDisposable
    {
        CookieContainer GetCookies();
        void UpdateClient();
        Task<string> GetResults(IApiInfo apiInfo);
        Task<string> GetResults(string url);
        Task<HttpResponseMessage> GetRespone(string url);
        Task<string> GetResults(string url, string host);
        Task<string> PostResults(IApiInfo apiInfo, string postContent);
        Task<string> GetResultsWithUrl(string url, ZipType zipType);
        Task<string> PostResults(string url, string postContent);
        Task<string> PostResultsUtf8(IApiInfo apiInfo, string postContent);
        Task<string> PostResultsUtf8(string apiInfo, string postContent);
        Task<string> PostResults(string url, string PostContent, string Referer);
        Task<string> GetResultsGZip(string url);
        Task<string> GetResultsDeflate(string url);
        Task<string> GetResultsUTF8Encode(IApiInfo apiInfo);
        Task<string> GetResultsUTF8Encode(string url);
        Task GetImageStream(string url, Action<byte[]> callBack);
        Task<UploadImages> UploadImage(FileInfo fileInfo);
    }
}